]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
tools: Migrate changed overrides settings
authorFlorian Müllner <fmuellner@gnome.org>
Wed, 18 Jul 2018 17:27:29 +0000 (19:27 +0200)
committerFlorian Müllner <florian.muellner@gmail.com>
Tue, 31 Jul 2018 18:36:26 +0000 (18:36 +0000)
While the new per-desktop overrides in GIO are easier to use for
both developers and users, it is still inconvenient for everyone
who changed the defaults using the old overrides hack to lose
their settings. Address this by running a small script on startup
that migrates existing settings.

https://bugzilla.gnome.org/show_bug.cgi?id=786496

data/gnome-shell-overrides-migration.desktop.in [new file with mode: 0644]
data/meson.build
meson.build
tools/gnome-shell-overrides-migration.sh [new file with mode: 0755]
tools/meson.build [new file with mode: 0644]

diff --git a/data/gnome-shell-overrides-migration.desktop.in b/data/gnome-shell-overrides-migration.desktop.in
new file mode 100644 (file)
index 0000000..8ef86ac
--- /dev/null
@@ -0,0 +1,5 @@
+[Desktop Entry]
+Type=Application
+Name=GNOME settings overrides migration
+NoDisplay=True
+Exec=@libexecdir@/gnome-shell-overrides-migration.sh
index de2e2053cbd227dc2e133c26df8a992705d3b554..68e3ab81f96def5495c867ed103a95c6943652ee 100644 (file)
@@ -94,6 +94,15 @@ schema = configure_file(
 )
 install_data('00_org.gnome.shell.gschema.override', install_dir: schemadir)
 
+overrides_migration_conf = configuration_data()
+overrides_migration_conf.set('libexecdir', libexecdir)
+overrides_migration = configure_file(
+  input: 'gnome-shell-overrides-migration.desktop.in',
+  output: 'gnome-shell-overrides-migration.desktop',
+  configuration: overrides_migration_conf,
+  install_dir: autostartdir
+)
+
 if have_systemd
   unitconf = configuration_data()
   unitconf.set('bindir', bindir)
index ad513a6659739616fd2e230c8a4a7cfcb58d98f2..04568490299a17e2a2c665d16e1e0790336a2337 100644 (file)
@@ -44,10 +44,12 @@ datadir = join_paths(prefix, get_option('datadir'))
 libdir = join_paths(prefix, get_option('libdir'))
 libexecdir = join_paths(prefix, get_option('libexecdir'))
 mandir = join_paths(prefix, get_option('mandir'))
+sysconfdir = join_paths(prefix, get_option('sysconfdir'))
 
 pkgdatadir = join_paths(datadir, meson.project_name())
 pkglibdir = join_paths(libdir, meson.project_name())
 
+autostartdir = join_paths(sysconfdir, 'xdg', 'autostart')
 convertdir = join_paths(datadir, 'GConf', 'gsettings')
 desktopdir = join_paths(datadir, 'applications')
 ifacedir = join_paths(datadir, 'dbus-1', 'interfaces')
@@ -203,6 +205,7 @@ subdir('src')
 subdir('po')
 subdir('data')
 subdir('tests')
+subdir('tools')
 
 if get_option('gtk_doc')
   subdir('docs/reference')
diff --git a/tools/gnome-shell-overrides-migration.sh b/tools/gnome-shell-overrides-migration.sh
new file mode 100755 (executable)
index 0000000..a1b4cb6
--- /dev/null
@@ -0,0 +1,38 @@
+#!/bin/sh
+
+PKG_DATA_DIR=${XDG_DATA_HOME:-$HOME/.local/share}/gnome-shell
+
+MIGRATION_GUARD=$PKG_DATA_DIR/gnome-overrides-migrated
+OVERRIDE_SCHEMA=
+
+if [ -f $MIGRATION_GUARD ]; then
+  exit # already migrated
+fi
+
+# Find the right session
+if echo $XDG_CURRENT_DESKTOP | grep -q -v GNOME; then
+  exit # not a GNOME session
+fi
+
+if echo $XDG_CURRENT_DESKTOP | grep -q Classic; then
+  OVERRIDE_SCHEMA=org.gnome.shell.extensions.classic-overrides
+else
+  OVERRIDE_SCHEMA=org.gnome.shell.overrides
+fi
+
+mkdir -p $PKG_DATA_DIR
+
+for k in `gsettings list-keys $OVERRIDE_SCHEMA`
+do
+  if [ $k = button-layout ]; then
+    orig_schema=org.gnome.desktop.wm.preferences
+  else
+    orig_schema=org.gnome.mutter
+  fi
+
+  oldValue=`gsettings get $OVERRIDE_SCHEMA $k`
+  curValue=`gsettings get $orig_schema $k`
+  if [ $oldValue != $curValue ]; then
+    gsettings set $orig_schema $k $oldValue
+  fi
+done && touch $MIGRATION_GUARD
diff --git a/tools/meson.build b/tools/meson.build
new file mode 100644 (file)
index 0000000..d8e217c
--- /dev/null
@@ -0,0 +1,4 @@
+install_data('gnome-shell-overrides-migration.sh',
+  install_dir: libexecdir,
+  install_mode: 'rwxr-xr-x'
+)